package io.netty.test.main.netty;

import io.netty.channel.ChannelInitializer;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpServerCodec;
import io.netty.handler.stream.ChunkedWriteHandler;

/**
 * @author LuoYu
 * @date 2018/11/03 15:48
 * <p>
 * Description:
 * 注册初始化连接时候的各个组件{@link NettyBootstrap}
 */
public class BizHandlerInitializer extends ChannelInitializer<SocketChannel> {
    /**
     * channel被注册后，这个方法会被调用
     * 3.在初始化器中注册（添加）ChannelHandler的实现类，对数据进行自定义处理
     */
    @Override
    protected void initChannel(SocketChannel ch) throws Exception {
        // pipeline 信息流处理管道
        // 可以给pipeline安装（注册）一些类似“过滤器”的处理器
        // 来对信息流进行处理
        // 这些处理器都实现了ChannelHandler接口
        ch.pipeline().addLast("http-codec",new HttpServerCodec())
                     .addLast("aggregator",new HttpObjectAggregator(65563))
                     .addLast("http-chunked",new ChunkedWriteHandler())
                     .addLast("handler",new BizHandler());
    }
}
